package pandora.box.ramoatividade;

import java.util.Date;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import persistence.HibernateUtil;

public class RamoAtividadeDAOImp implements RamoAtividadeDAO {
	private Session session 		= null;
	private Transaction transaction = null;
	
	public void setSessao(Session session){
		this.session = session;
	}
	
	@Override
	public boolean inserirramoatividade(RamoAtividade ramoatividade) {
		boolean retorno = false;
		try {			
			this.session = HibernateUtil.getSessionFactory().openSession();
			this.transaction = this.session.beginTransaction();
			if(ramoatividade.getBolativo() == "false"){
				ramoatividade.setBolativo("false");
			}else{
				ramoatividade.setBolativo("true");
			}
			ramoatividade.setDtinclusao(new Date());
			ramoatividade.setUsuarioinclusao("root");
			ramoatividade.setUsuarioalteracao("root");
			System.out.println("DAO nome empresa "+ramoatividade.getNmramoatividade());
			this.session.persist(ramoatividade);
			this.transaction.commit();
			retorno = true;
		} catch (Exception e) {
			this.transaction.rollback();
			e.printStackTrace();
		}finally{
			this.session.close();
		}
		return retorno;
	}
	
	@Override
	public boolean alterarramoatividade(RamoAtividade ramoatividade) {
		boolean retorno = false;
		try {
			this.session = HibernateUtil.getSessionFactory().openSession();
			this.transaction = this.session.beginTransaction();
			ramoatividade.setDtalteracao(new Date());
			ramoatividade.setUsuarioalteracao("root");
			this.session.update(ramoatividade);
			this.transaction.commit();
			retorno = true;
		} catch (Exception e) {
			this.transaction.rollback();
			e.printStackTrace();
		}finally{
			this.session.close();
		}
		return retorno;
	}
	
	@Override
	public boolean excluirramoatividade(RamoAtividade ramoatividade) {
		boolean retorno = false;
		try {
			this.session = HibernateUtil.getSessionFactory().openSession();
			this.transaction = this.session.beginTransaction();
			this.session.delete(this.session.get(RamoAtividade.class, ramoatividade.getIdramoatividade()));
			this.transaction.commit();
			retorno = true;
		} catch (Exception e) {
			this.transaction.rollback();
			e.printStackTrace();
		}finally{
			this.session.close();
		}
		return retorno;
	}
	
	@Override
	public RamoAtividade listarRamoAtividade(RamoAtividade ramoatividade) {
		RamoAtividade ue = null;
		try {
			this.session = HibernateUtil.getSessionFactory().openSession();
			ue = (RamoAtividade) this.session.get(RamoAtividade.class, ramoatividade.getIdramoatividade());			
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			session.close();
		}
		return ue;
	}
		
	@SuppressWarnings("unchecked")
	@Override
	public List<RamoAtividade> listaTRamoAtividade() {
		List<RamoAtividade> list = null;
		//Criteria sql = null;
		try {
			/**
			this.session = HibernateUtil.getSessionFactory().openSession();
			this.transaction = this.session.beginTransaction();
			//list = this.session.createQuery("select * from ramoatividade").list();
			Criteria sql = this.session.createCriteria(RamoAtividade.class);
			**/
			this.session = HibernateUtil.getSessionFactory().openSession();
			this.transaction = this.session.beginTransaction();
			Query query = session.createQuery("from RamoAtividade order by NMRAMOATIVIDADE");
			list = query.list();
			this.transaction.commit();
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			this.session.close();
		}
		return list;
	}
	
	@SuppressWarnings("unchecked")
	@Override
	public List<RamoAtividade> listaTRamoAtividadeA() {
		List<RamoAtividade> list = null;
		try {
			this.session = HibernateUtil.getSessionFactory().openSession();
			this.transaction = this.session.beginTransaction();
			Query query = session.createQuery("from RamoAtividade where bolativo = 'true'");
			list = query.list();
			this.transaction.commit();
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			this.session.close();
		}
		return list;
	}
	
	@SuppressWarnings("unchecked")
	public List<RamoAtividade> localizarRMSelected(Integer rms) {
		List<RamoAtividade> list = null;
		try {
			this.session = HibernateUtil.getSessionFactory().openSession();
			this.transaction = this.session.beginTransaction();
			Query query = session.createQuery("from RamoAtividade where idramoatividade = "+rms);
			list = query.list();
			this.transaction.commit();
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			this.session.close();
		}
		return list;
	}
}
